package com.detection.common.domain;


import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;

/**
 * 用户对象 sys_user
 *
 * @author ruoyi
 */
@ToString
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel("用户信息")
public class SysUser
{
    private static final long serialVersionUID = 1L;

    /** 用户ID */
    private Long userId;

    /** 部门ID */
    private Long deptId;

    /** 部门对象 */
//    @Excels({
//            @Excel(name = "部门名称", targetAttr = "deptName", type = Excel.Type.ALL),
//            @Excel(name = "部门负责人", targetAttr = "leader", type = Excel.Type.EXPORT)
//    })
    private SysDept dept;

    /** 部门名称 */
    @ApiModelProperty("部门名称")
    private String deptName;

    /** 用户账号 */
    @ApiModelProperty("人员名称")
    private String userName;

    /**
     * 用户昵称
     */
    private String nickName;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("出生日期")
    private Date birthday;

    /** 用户邮箱 */
    @ApiModelProperty("邮箱")
    private String email;

    /** 手机号码 */
    @ApiModelProperty("手机号码")
    private String phonenumber;

    /** 用户性别 */
    private String sex;

    /** 用户头像 */
    @ApiModelProperty("用户头像")
    private String avatar;

    /** 密码 */
    @ApiModelProperty("密码")
    private String password;

    /** 盐加密 */
    private String salt;

    /** 审批状态（0通过 1待审，2驳回） */
    private String status;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    /** 最后登录IP */
    private String loginIp;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date loginDate;

    /** 角色对象 */
    private List<SysRole> roles;

    /** 角色组 */
    private Long[] roleIds;

    /** 岗位组 */
    private Long[] postIds;

    /** 角色ID */
    private Long roleId;


    /** YQ编码 */
    @ApiModelProperty("YQ编码")
    private String campCode;

    /** YQ名称 */
    @ApiModelProperty("YQ名称")
    private String campName;

    /** 人员编码 */
    @ApiModelProperty("人员编码")
    private String personCode;

    /** 身份证号 */
    @ApiModelProperty("身份证号")
    private String idCardNo;

    /** 办公电话 */
    @ApiModelProperty("办公电话")
    private String contactorNum;

    /** 政治面貌 */
    @ApiModelProperty("政治面貌")
    private String politicalAffiliation;

    /** 部职别 */
    @ApiModelProperty("部职别")
    private String unit;

    /** 人员类别 */
    @ApiModelProperty("人员类别")
    private String personnelCategory;

    /** 军队人员详细类别 */
    @ApiModelProperty("军队人员详细类别")
    private String militaryRank;

    /** 婚姻状态 */
    @ApiModelProperty("婚姻状态")
    private String marriageStatus;

    /** 国籍 */
    @ApiModelProperty("国籍")
    private String nationalityCode;

    /** 民族 */
    @ApiModelProperty("民族")
    private String ethicCode;

    /** 照片url */
    @ApiModelProperty("照片url")
    private String picUrl;

    /** 血型 */
    @ApiModelProperty("血型")
    private String bloodType;

    /** DNA文件路径 */
    @ApiModelProperty("DNA文件路径")
    private String dnaFileUrl;

    /** 指纹信息 */
    @ApiModelProperty("指纹信息")
    private String fingerprintContent;

    /** 现住地详址 */
    @ApiModelProperty("现住地详址")
    private String presentAddress;

    @ApiModelProperty("现住地详址编号")
    private String presentAddressCode;

    /** 户籍地详址 */
    @ApiModelProperty("户籍地详址")
    private String domicileAddress;

    @ApiModelProperty("户籍地详址编号")
    private String domicileAddressCode;

    /** 主要社会关系 */
    @ApiModelProperty("主要社会关系")
    private String relation;

    /** 学历 */
    @ApiModelProperty("学历")
    private String education;

    /** 护照号码 */
    @ApiModelProperty("护照号码")
    private String passport;

    /** 涉密等级 */
    @ApiModelProperty("涉密等级")
    private String secrectLevel;

    /** 是否个别人员 */
    @ApiModelProperty("是否个别人员")
    private String individualStaff;

    /** 否罹患心理疾病 */
    @ApiModelProperty("否罹患心理疾病")
    private String sickPerson;

    /** 是否重点人员 */
    @ApiModelProperty("是否重点人员")
    private String keyPerson;

    /** 军人证号码 */
    @ApiModelProperty("军人证号码")
    private String officerCertificateNo;

    /** 微信号码 */
    @ApiModelProperty("微信号码")
    private String wechatNo;

    /** QQ号码 */
    @ApiModelProperty("QQ号码")
    private String qqNo;

    /** 入伍日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty("入伍日期")
    private Date enlistmentDate;



    /** 服役状态 */
    @ApiModelProperty("服役状态")
    private String serviceStatus;

    /** 军衔 */
    @ApiModelProperty("军衔")
    private String rankCode;

    /** 职务 */
    @ApiModelProperty("职务")
    private String post;

    /** 岗位职务层级 */
    @ApiModelProperty("岗位职务层级")
    private String postTitleLevel;

    /** OAID */
    @ApiModelProperty("OAID")
    private String oaId;

    /** 海康ID */
    @ApiModelProperty("海康ID")
    private String haikangId;

    @ApiModelProperty("用户账号拼音")
    private String userNamePinyin;

    private String relationName;

    private String uploadBase;

    /** 创建者 */
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    private String remark;

}
